package com.atguigu.service;

import com.atguigu.entity.OrderInfo;
import com.atguigu.enums.ProcessStatus;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 订单表 订单表 服务类
 * </p>
 *
 * @author GuoJH
 * @since 2021-09-07
 */
public interface OrderInfoService extends IService<OrderInfo> {
    //对比交易编号 防止没有刷新页面重复提交问题
    boolean checkTradeNo(String tradeNo, String userId);
    //设置交易编号
    String getTradeNo(String userId);
    //验证完成之后 删除掉交易编号(让每次刷新页面 都生成不一样的交易编号)
    void deleteTradeNo(String userId);
    //保存订单信息
    Long saveOrderInfoAndDetail(OrderInfo orderInfo);
    //验证是否还有库存  及下单前价格的变化
    //访问http://localhost:8100/hasStock?skuId=24&num=99  0:无库存  1:有库存
    List<String> checkStockAndPrice(OrderInfo orderInfo, String userId);
    //修改订单的状态为关闭
    void updateOrderStatus(OrderInfo orderInfo, ProcessStatus processStatus);
    //根据订单id获取订单的信息
    OrderInfo getOrderInfo(Long orderId);
    //利用mq发送消息给库存系统 减库存
    void sendMsgToWareManage(OrderInfo orderId);
    //拆单 因为商家不同 仓库不同 商品不同
    String splitOrder(Long orderId, String wareHouseIdSkuIdMap);
}
